home *** CD-ROM | disk | FTP | other *** search
/ NeXTSTEP 3.3 (Developer)…68k, x86, SPARC, PA-RISC] / NeXTSTEP 3.3 Dev Intel.iso / NextDeveloper / Makefiles / driverkit / Makefile.main_driver < prev    next >
Makefile  |  1994-07-31  |  10KB  |  268 lines

  1. #
  2. #                                  driver.make
  3. #
  4.  
  5. PRODUCT = $(PRODUCT_ROOT)/$(NAME:.tproj=)
  6.  
  7. $(PRODUCT_ROOT):
  8.     @$(MKDIRS) $(PRODUCT_ROOT)
  9.     
  10. APP_MAKEFILE_DIR = /NextDeveloper/Makefiles/app
  11. include $(APP_MAKEFILE_DIR)/common.make
  12.  
  13. KL_LD = /usr/bin/kl_ld
  14.  
  15. BUILD_NAME=$(NAME:.tproj=)
  16. SERVER_NAME=$(BUILD_NAME:_reloc=)
  17. INSTANCE_VAR=$(SERVER_NAME)_instance
  18.  
  19. #
  20. # Specify name of load_commands and unload_commands text files for 
  21. # kern-loadable module.
  22. #
  23. LOAD_COMMAND_FILE = Load_Commands.sect
  24. LOAD_COMMANDS = -l $(LOAD_COMMAND_FILE)
  25.  
  26. #
  27. # Options to kl_ld for generating kern-loadable.
  28. #
  29. KL_DEBUG_FLAGS= -d $(SERVER_NAME)_loadable
  30. KL_RELEASE_FLAGS=
  31.  
  32. CFLAGS = -pipe -Wno-format -nostdinc -I. -I.. -I/NextDeveloper/Headers -I/NextDeveloper/Headers/ansi -I/NextDeveloper/Headers/bsd -DKERNEL -DMACH_USER_API -DKERNEL_SERVER_INSTANCE=$(INSTANCE_VAR)
  33.  
  34. DEBUG_CFLAGS = $(COMMON_CFLAGS) -DDEBUG -DDDM_DEBUG
  35.  
  36. -include Makefile.driver_preamble
  37.  
  38. all:: tool
  39.  
  40. app:: tool
  41.  
  42. tool::
  43.     @($(MKDIRS) $(SYMROOT) ; \
  44.      $(process_target_archs)_obj ; \
  45.     $(set_bundle_ext) ; \
  46.     if [ "$(ENGLISH)" = "YES" -o "$(JAPANESE)" != "YES" ] ; then \
  47.         language_cflags="" ; \
  48.         libs="$(LIBS)" ; \
  49.         other_libs="$(OTHER_LIBS)" ; \
  50.     else \
  51.         language_cflags="-DKANJI" ; \
  52.         libs="$(LIBS:lNeXT_s=lNeXTJ_s)" ; \
  53.         other_libs="$(OTHER_LIBS:lNeXT_s=lNeXTJ_s)" ; \
  54.     fi ; \
  55.     $(MAKE) project \
  56.         "PRODUCT_ROOT = $(SYMROOT)" \
  57.         "PRODUCT = $(SYMROOT)/$(NAME)" \
  58.         "OFILE_DIR = $(OBJROOT)/$$obj_dir" \
  59.         "PROJ_CFLAGS = $(NORMAL_CFLAGS) $$language_cflags" \
  60.         "LIBS = $$libs" \
  61.         "LDFLAGS = $(LDFLAGS) $(KL_RELEASE_FLAGS)"        \
  62.         "OTHER_LIBS = $$other_libs" \
  63.         "APP_MAKEFILE_DIR = $(APP_MAKEFILE_DIR)" \
  64.         "BUNDLE_EXTENSION = $$bundle_ext" \
  65.         "RC_CFLAGS = $$arch_cflags" \
  66.         "RC_ARCHS = $$archs" \
  67.         "SRCROOT = $(SRCROOT)" \
  68.         "OBJROOT = $(OBJROOT)" \
  69.         "SYMROOT = $(SYMROOT)/sym" \
  70.         "SYM_DIR = $(SYMROOT)/sym" )
  71.  
  72. debug::
  73.     @($(MKDIRS) $(SYMROOT) ; \
  74.      $(process_target_archs)_debug_obj ; \
  75.     $(set_bundle_ext) ; \
  76.     if [ "$(ENGLISH)" = "YES" -o "$(JAPANESE)" != "YES" ] ; then \
  77.         language_cflags="" ; \
  78.         libs="$(DEBUG_LIBS)" ; \
  79.         other_libs="$(OTHER_DEBUG_LIBS)" ; \
  80.         other_japanese_libs="" ; \
  81.     else \
  82.         language_cflags="-DKANJI" ; \
  83.         libs="$(DEBUG_LIBS:lNeXT_s=lNeXTJ_s)" ; \
  84.         other_libs="$(OTHER_DEBUG_LIBS:lNeXT_s=lNeXTJ_s)" ; \
  85.         other_japanese_libs="$(OTHER_JAPANESE_DEBUG_LIBS)" ; \
  86.     fi ; \
  87.     $(MAKE) project \
  88.         "PRODUCT_ROOT = $(SYMROOT)" \
  89.         "PRODUCT = $(SYMROOT)/$(NAME)" \
  90.         "OFILE_DIR = $(OBJROOT)/$$obj_dir" \
  91.         "PROJ_CFLAGS = $(DEBUG_CFLAGS) $$language_cflags" \
  92.         "LDFLAGS = $(LDFLAGS) $(KL_DEBUG_FLAGS)"        \
  93.         "LIBS = $$libs" "OTHER_LIBS = $$other_libs" \
  94.         "OTHER_JAPANESE_LIBS = $$other_japanese_libs" \
  95.         "APP_MAKEFILE_DIR = $(APP_MAKEFILE_DIR)" \
  96.         "BUNDLE_EXTENSION = $$bundle_ext" \
  97.         "RC_CFLAGS = $$arch_cflags" \
  98.         "RC_ARCHS = $$archs" \
  99.         "SRCROOT = $(SRCROOT)" \
  100.         "OBJROOT = $(OBJROOT)" \
  101.         "SYMROOT = $(SYMROOT)/sym" \
  102.         "SYM_DIR = $(SYMROOT)/sym" )
  103.  
  104. profile::
  105.     @($(MKDIRS) $(SYMROOT) ; \
  106.      $(process_target_archs)_profile_obj ; \
  107.     $(set_bundle_ext) ; \
  108.     if [ "$(ENGLISH)" = "YES" -o "$(JAPANESE)" != "YES" ] ; then \
  109.         language_cflags="" ; \
  110.         libs="$(PROF_LIBS)" ; \
  111.         other_libs="$(OTHER_PROF_LIBS)" ; \
  112.         other_japanese_libs="" ; \
  113.     else \
  114.         language_cflags="-DKANJI" ; \
  115.         libs="$(PROF_LIBS:lNeXT_s=lNeXTJ_s)" ; \
  116.         other_libs="$(OTHER_PROF_LIBS:lNeXT_s=lNeXTJ_s)" ; \
  117.         other_japanese_libs="$(OTHER_JAPANESE_PROF_LIBS)" ; \
  118.     fi ; \
  119.     $(MAKE) project \
  120.         "PRODUCT_ROOT = $(SYMROOT)" \
  121.         "PRODUCT = $(SYMROOT)/$(NAME)" \
  122.         "OFILE_DIR = $(OBJROOT)/$$obj_dir" \
  123.         "PROJ_CFLAGS = $(PROFILE_CFLAGS) $$language_cflags" \
  124.         "LIBS = $$libs" "OTHER_LIBS = $$other_libs" \
  125.         "OTHER_JAPANESE_LIBS = $$other_japanese_libs" \
  126.         "APP_MAKEFILE_DIR = $(APP_MAKEFILE_DIR)" \
  127.         "BUNDLE_EXTENSION = $$bundle_ext" \
  128.         "RC_CFLAGS = $$arch_cflags" \
  129.         "RC_ARCHS = $$archs" \
  130.         "SRCROOT = $(SRCROOT)" \
  131.         "OBJROOT = $(OBJROOT)" \
  132.         "SYMROOT = $(SYMROOT)/sym" \
  133.         "SYM_DIR = $(SYMROOT)/sym" )
  134.  
  135.  
  136.  
  137. depend:: Makefile.dependencies $(SUBPROJECTS:.subproj=.depend) # Note: tools can not have bundles.
  138.  
  139. project::   $(INITIAL_TARGETS) toplevel_subcomponents resources $(PRODUCT)
  140.  
  141. # Tools can have no bundles; there's no ".tool" wrapper to store it in 
  142. toplevel_subcomponents:: $(PRODUCT_ROOT) subprojs # bundles
  143.     -@($(RM) -f $(PRODUCT_ROOT)/$(CHANGES_FILE) ; \
  144.     $(ECHO) "$(OFILE_DIR)" > $(PRODUCT_ROOT)/$(CHANGES_FILE))
  145.  
  146. $(PRODUCT): $(PRODUCT_DEPENDS) $(OTHER_PRODUCT_DEPENDS) $(INSTANCE_VAR).o
  147.     @(adaptors="" ; \
  148.     for adaptor in $(OTHERRELOCATABLES) none ; do \
  149.         if [ $$adaptor = "none" ] ; then break; fi ; \
  150.         for path in $(ADAPTOR_SEARCH_PATH) none ; do \
  151.             if [ $$path = "none" ] ; then break; fi ;\
  152.             if [ -r $$path/$$adaptor ] ; then \
  153.             adaptors="$$adaptors $$path/$$adaptor" ; \
  154.             break ; \
  155.         fi ; \
  156.         done ; \
  157.     done ; \
  158.     if [ "`$(ECHO) $(OFILES) $(OTHER_OFILES) | wc -w`" != "       0" ] ; then \
  159.         if [ "$(ENGLISH)" = "YES" -o "$(JAPANESE)" != "YES" ] ; then \
  160.             other_japanese_libs=""; \
  161.         else \
  162.             other_japanese_libs="$(OTHER_JAPANESE_LIBS)" ; \
  163.         fi ; \
  164.           cmd="$(KL_LD) $(OBJCFLAG) $(LDFLAGS) $(OTHER_LDFLAGS) \
  165.                -o $(PRODUCT) $(OFILES) $(OTHER_OFILES) $(INSTANCE_VAR).o \
  166.            $$adaptors $$other_japanese_libs $(OTHER_LIBS) $(LIBS) \
  167.            -n $(SERVER_NAME) $(LOAD_COMMANDS) $(UNLOAD_COMMANDS) -i $(INSTANCE_VAR)";\
  168.        echo $$cmd ; \
  169.        $$cmd ; \
  170.         fi    )
  171.     
  172.  
  173. $(DSTROOT)$(INSTALLDIR) $(DSTROOT)$(PUBLIC_INSTALL_HDR_DIR):
  174.     $(MKDIRS) $@
  175.  
  176. strip_myself::
  177.     $(STRIP) $(RELOCATABLE_STRIP_OPTS) $(DSTROOT)/$(PARENT_DIR)/$(NAME)
  178.  
  179. before_install:: $(DSTROOT)$(INSTALLDIR)
  180.     $(RM) -rf $(DSTROOT)$(INSTALLDIR)/$(NAME)
  181.  
  182. after_install::
  183.  
  184. installhdrs:: $(DSTROOT)$(PUBLIC_INSTALL_HDR_DIR)
  185.     @if [ -n "${COMMON_PUBLIC_HFILES}" ];             \
  186.     then                            \
  187.         install -c -u -m 444 $(COMMON_PUBLIC_HFILES)    \
  188.             $(DSTROOT)$(PUBLIC_INSTALL_HDR_DIR);        \
  189.     fi
  190.  
  191. install:: tool before_install installhdrs $(OTHER_INSTALL_DEPENDS)
  192.     (cd $(SYMROOT); $(TAR) chf - $(NAME)) | (cd $(DSTROOT)$(INSTALLDIR); $(TAR) xf -)
  193.     $(STRIP) $(RELOCATABLE_STRIP_OPTS) $(DSTROOT)$(INSTALLDIR)/$(NAME) 
  194.     -$(CHOWN) -Rf $(INSTALL_AS_USER).$(INSTALL_AS_GROUP) \
  195.         $(DSTROOT)$(INSTALLDIR)/$(NAME)
  196.     -$(CHMOD) -Rf go-w $(DSTROOT)$(INSTALLDIR)/$(NAME)
  197.     @(if [ "$(INSTALL_PERMISSIONS)" != "" ] ; then \
  198.         $(ECHO) $(CHMOD) -f $(INSTALL_PERMISSIONS) \
  199.             $(DSTROOT)$(INSTALLDIR)/$(NAME); \
  200.         $(CHMOD) -f $(INSTALL_PERMISSIONS) \
  201.             $(DSTROOT)$(INSTALLDIR)/$(NAME); \
  202.     fi)
  203.     @($(process_target_archs)_obj ; \
  204.     if [ "$(ENGLISH)" = "YES" -o "$(JAPANESE)" != "YES" ] ; then \
  205.         language_cflags="" ; \
  206.     else \
  207.         language_cflags="-DKANJI" ; \
  208.     fi ; \
  209.     $(MAKE) after_install     "DSTROOT=$(DSTROOT)" \
  210.                        "OBJROOT=$(OBJROOT)" \
  211.                 "SYMROOT = $(SYMROOT)/sym" \
  212.                 "SYM_DIR = $(SYMROOT)/sym" \
  213.                 "PRODUCT_ROOT = $(PRODUCT_ROOT)" \
  214.                 "PRODUCT = $(PRODUCT_ROOT)/$(NAME)" \
  215.                 "OFILE_DIR = $(OBJROOT)/$$obj_dir" \
  216.                 "PROJ_CFLAGS = $(NORMAL_CFLAGS) $$language_cflags" \
  217.                 "APP_MAKEFILE_DIR = $(APP_MAKEFILE_DIR)" \
  218.                 "RC_CFLAGS = $$arch_cflags" \
  219.                 "RC_ARCHS = $$archs" )
  220.  
  221. #
  222. # Make the global instance
  223. #
  224. $(INSTANCE_VAR).m:
  225.     @echo Creating $(INSTANCE_VAR).m; \
  226.     echo "#import <driverkit/IODevice.h>\n#import <kernserv/kern_server_types.h>\n\nkern_server_t $(INSTANCE_VAR);\n\n@interface $(SERVER_NAME)KernelServerInstance : Object\n{}\n+ (kern_server_t *)kernelServerInstance;\n@end\n\n@implementation $(SERVER_NAME)KernelServerInstance\n+ (kern_server_t *)kernelServerInstance\n{\n\treturn &$(INSTANCE_VAR);\n}\n@end\n\n@interface $(SERVER_NAME)Version : IODevice\n{}\n+ (int)driverKitVersionFor$(SERVER_NAME);\n@end\n\n@implementation $(SERVER_NAME)Version\n+ (int)driverKitVersionFor$(SERVER_NAME)\n{\n\treturn IO_DRIVERKIT_VERSION;\n}\n@end\n" > $(OFILE_DIR)/$@
  227.  
  228. #.DEFAULT 
  229.  
  230. help:
  231.     @if (test "$<"); then        \
  232.         $(ECHO) 'ERROR: Unrecognized Makefile target "$<"';    \
  233.     fi
  234.     @$(ECHO) 'The following targets are available:'
  235.     @$(ECHO) 
  236.     @$(ECHO) ' all         Makes the tool target (below).  This is the default target.'
  237.     @$(ECHO) 
  238.     @$(ECHO) ' tool        Compiles and links an optimized (and debuggable) version of the'
  239.     @$(ECHO) '             project, ready to install, into <ProjectName>.'
  240.     @$(ECHO)      
  241.     @$(ECHO) ' debug       Compiles (with all warnings and -DDEBUG on) and links a '
  242.     @$(ECHO) '             fully-debuggable version of the project into a <ProjectName>_d.' 
  243.     @$(ECHO) 
  244.     @$(ECHO) ' profile     Compiles (with all warnings and -DPROFILE on) and links a'
  245.     @$(ECHO) '             version of the project into <ProjectName>_p'
  246.     @$(ECHO) '             that will, when run, generate a gprof report.'
  247.     @$(ECHO) 
  248.     @$(ECHO) ' depend      Generates an optional Makefile.dependencies file for every level'
  249.     @$(ECHO) '             of the project to reflect the complete dependency graph'
  250.     @$(ECHO) '             (including headers).'
  251.     @$(ECHO) 
  252.     @$(ECHO) ' install     Builds (if needed) and copies <ProjectName> into the'
  253.     @$(ECHO) '             installation directory, setting permissions and owners as'
  254.     @$(ECHO) '             appropriate.'
  255.     @$(ECHO) 
  256.     @$(ECHO) ' installsrc  Installs the source files for the project into the directory'
  257.     @$(ECHO) '             specified in the SRCROOT variable in a command-line argument.'
  258.     @$(ECHO) '             Note: the target directory will be removed and recreated.'
  259.     @$(ECHO)        
  260.     @$(ECHO) ' installhdrs Installs the source files for the project.'
  261.     @$(ECHO) 
  262.     @$(ECHO) ' clean       Removes all files in the project derived from previous builds.'
  263.     @$(ECHO)  
  264.     @$(ECHO) ' help        Lists these targets with their descriptions.'
  265.     @$(ECHO) 
  266.     @$(ECHO) 'For more details, see the comments in /NextDeveloper/Makefiles/app/*.make.'
  267.  
  268.